Many modern businesses encourage their customers to communicate with agents of the business through diverse media such as voice calls, text chat, SMS, and email. In many cases, agents are well-trained in diverse, yet specialized, skills that assure high customer satisfaction, once a customer is connected to a suitably skilled agent. In addition to the skills of the agent, a fundamental factor that impacts customer satisfaction is how long a customer must wait before being connected to an agent. Typically, the longer the customer waits the lower is the customer's satisfaction. When agents are engaged in more than one concurrent customer session, as is common for text chat, for example, the customer can also experience extra delays in service within an established customer-agent session while the agent is serving other customers. Traditionally, the agents of the business are organized in contact centers with special facilities for routing different types of customer contacts to appropriately skilled agents that can serve them. Quality of service and service quality are terms used in contact centers to refer to the portion of customer satisfaction that depends on delays in serving waiting customer contacts. Poor service quality is inevitable whenever there are not enough agents to keep pace with the rate customer contacts are offered to the contact center. Larger contact centers use specialized workforce management tools to, among other things, (1) forecast the numbers of different types of customer contacts that are expected to be offered to the contact center in a given period on some future date, (2) generate and maintain agent work schedules for future dates, (3) and model how forecasted contacts will be handled by agents on a future date.
In a modern contact center, where different types of agents have diverse skills and serve diverse types of contacts through different media, the routing of customer contacts to suitable agents is accomplished by a sophisticated automatic contact distribution (ACD) system that is part of a contact routing platform. A fundamental task of such a routing platform is to quickly connect a customer to an appropriately skilled and available agent through some channel of communication. When a contact is offered to the contact center but no suitably skilled agent is available, the routing platform will typically attempt to hold the contact until a suitably skilled, medium enabled agent becomes available, and then make the connection between the contact and the agent. On some platforms, the different types of contacts may be held in first come, first served queues. On other platforms, the contacts may be held in pools where a newly available agent will be routed to a contact whose skill-medium requirements best matches the agent's skills and medium, even though there are other contacts in the pool that have been waiting longer. On still other routing platforms, the possible matches of contacts with available agents may be constrained by complicated dynamic rules that change depending on how long a contact has been waiting in either a queue or pool. Because of the complexity of modern contact routing platforms, some workforce management systems use simulators to model how contacts are routed to agents in a given contact center in order to determine the effect of staff levels of the various types of agents on the performance of the contact center and the quality of customer service.
One fundamental task for a workforce management system is to estimate how many agents of the various skill and media types are required in any period of some future day so that the customers can be expected to receive good quality of service on that future day. Such estimates of required staff levels can then guide the creation of agent work schedules for that future day.
In the case when multiple types of agents serve multiple types of contacts through the medium of text chat, within systems such as an automatic contact distribution system (ACD), determining the staff levels needed to achieve service goals in all periods of the day in a contact center can be a challenging problem. The need to solve this problem has been growing with the increasing popularity of chat messaging as a way for a business to interact with its customers. The problem of estimating staff to service a forecasted number of offered chat sessions is more complicated than that for estimating staff for other media types, such as calls or emails, because agents are typically required to handle more than one chat session at a time. One consequence of this is that the handle-times of individual chat sessions depend on how many concurrent chat sessions the agent is juggling. The expected handle time of a chat session is not a constant during concurrent chat, but depends on the dynamics of agent/customer interactions and how the agent interleaves messages among concurrent contacts. This is a very different situation from handle-times in a call center. Some approaches for calls, for example, assume that each type of call has a fixed average handle-time that is pre-determined as a configuration parameter of the call. In concurrent chat, it is necessary to compute the average session handle time based on the (complex) dynamics of how agents interact with concurrent contacts, as well as numerous configuration parameters.
The problem of estimating an average session handle-time is further complicated by the problem of determining the variability in the handle-time of individual chat sessions. Even in the case of non-concurrent chat (only one chat session at a time), the duration of an individual chat session is a random variable that depends, inter alia, on agent message composition times, customer message composition times, agent wrap-up times, and the number of message exchanges that comprise the chat session. All of these quantities are random variables that impact the probability that a fixed number of agents will achieve service goals on any given day, or period of the day.
One approximate solution for concurrent chat was described by Lewis and Beshears in U.S. Pat. No. 8,064,589, filed Jun. 20, 2008, granted Nov. 11, 2011 which is hereby incorporated in its entirety by references. This approach used single-skill chat and was based on an exact solution for the inflation of average session handle-time due to multiple chat sessions in a simplified model where an agent is known to be engaged in a fixed number of chat sessions. A situation where {tilde over (k)} agents simultaneously serve {tilde over (m)} chat sessions was treated as if there were {tilde over (k)}·{tilde over (m)} “effective” agents each working a single chat session with the inflated session handle-time that depends on {tilde over (m)}. Standard Erlang calculations were used to compute the number of “effective” agents that were required to meet service goals, given the inflated handle time. The number of actual agents was approximated by dividing the number of “effective” agents by {tilde over (m)}.
One approach to estimating staff levels for chat is based on workload computations using the average concurrency of chat sessions during a period. (The concurrency of a chat agent, during a period of some duration, T, can be defined in the following way. Let Dv denote the total duration of time during the period when the agent is simultaneously engaged in exactly v chat sessions, for v=0, 1, 2, 3, . . . . The concurrency of the agent is defined to be
            1      T        ⁢                  ∑        v            ⁢                        vD          v                .              )In some cases, an estimate of average concurrency is based on observed historical values, while in other cases (“proactive chat”) the chat router attempts to maintain a fixed concurrency that is configured by an administrator. The latter approach is feasible, for example, when the chat system monitors customer browsing behavior on a retail website and can decide to push to a customer a suggestion to chat with an agent based on both that customer's behavior and the actual concurrency of chat agents serving the website. The basic workload formula for concurrent chat (or almost any kind of concurrent work) is given by
  Workload  =            SessionAHT      ·      NumberOfChatSessions        Concurrency  The Workload is interpreted to be the number of staff-hours that should be scheduled in order to handle the NumberOfChatSessions.
Monte Carlo simulators for the case of just one agent-type and one contact-type communicating through concurrent chat, for a single period of the day, have been used to estimate the staff (the head-count) required to meet service delay goals. These simulators simulated the random arrival of chat sessions and the detailed exchanges of chat messages between individual agents and individual customers. To find the required staff, it was only necessary to adjust the staff level and run new simulations and determine if the adjusted staff was likely to meet service goals. A need exists for systems that create simulations for multiple agent and contact types communicating in diverse media, including chat, and that can estimate required staff for each of the multiple types of agents. Further, there is need for a means to contact other workforce management tools to derive estimates of upper and lower bounds for staffing that is expected to meet quality of service goals on a future day, and to thereby improve workforce management technology by creating detailed simulations of agents and contact behaviors while using the upper and lower bounds for determining the staff required to meet service quality goals.